home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 14 / Example 14.1 / GroupAI.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-06-30  |  1.2 KB  |  61 lines

  1. #ifndef _RTS_GROUPAI_
  2. #define _RTS_GROUPAI_
  3.  
  4. #include <vector>
  5. #include "mapObject.h"
  6.  
  7. #define TASK_NONE 0
  8. #define TASK_DEFEND_LOCATION 1
  9. #define TASK_ATTACK_LOCATION 2
  10. #define TASK_SCOUT 3
  11.  
  12. #define GROUP_STATE_IDLE 0
  13. #define GROUP_STATE_MOVING 1
  14. #define GROUP_STATE_BATTLE 2
  15.  
  16. class MASTERAI;
  17.  
  18. template <class T> int Find(std::vector<T> array, T object)
  19. {
  20.     for(int i=0;i<array.size();i++)
  21.         if(array[i] == object)
  22.             return i;
  23.  
  24.     return -1;
  25. }
  26.  
  27. class GROUPAI
  28. {
  29.     friend class MASTERAI;
  30.     friend class SMALL_ATTACK;
  31.     public:
  32.         GROUPAI(MASTERAI *_master);
  33.         ~GROUPAI();
  34.  
  35.         void AddMember(MAPOBJECT *newMember);
  36.         void RemoveMember(MAPOBJECT *oldMember);
  37.         void DisbandGroup();
  38.  
  39.         void EnemiesSpotted(std::vector<MAPOBJECT*> &manyEnemies);
  40.         void SetTask(int newTask, RECT *area);
  41.         GROUPAI* SplitGroup(std::vector<int> units);
  42.  
  43.         void GroupAI();
  44.         bool isDead();
  45.         INTPOINT GetCenter();
  46.  
  47.         //Orders
  48.         void Goto(RECT mArea);
  49.         void Attack(std::vector<MAPOBJECT*> &enemies);
  50.         void RetreatTo(RECT ma);
  51.         void Shuffle();
  52.  
  53.     private:
  54.         MASTERAI *m_pMaster;
  55.         std::vector<MAPOBJECT*> m_members, m_visibleEnemies;
  56.         int m_task;
  57.         int m_state;
  58.         RECT m_mapArea;        
  59. };
  60.  
  61. #endif